package com.cyzy.service;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.baomidou.mybatisplus.extension.service.IService;
import com.cyzy.pojo.User;
import com.cyzy.pojo.Payment;
import java.util.List;


/**
 * @author LIGHT
 */
public interface UserService extends IService<User> {
    /**
     * 用户登录
     */
    User login(String username, String password);

    /**
     * 邮箱登录
     */
    User emailLogin(String email);

    /**
     * 添加用户
     */
    boolean addUser(User user);

    /**
     * 根据用户名查询用户
     */
    User getUserByUsername(String username);

    /**
     * 根据邮箱查询用户
     */
    User getUserByEmail(String email);

    /**
     * 用户充值
     */
    boolean rechargeBalance(Long userId, Double amount);

    /**
     * 用户支付
     */
    boolean pay(String userId, Long amount);

    /**
     * 忘记密码
     */
    boolean forget(String email, String password);

    /**
     * 判断邮箱是否被使用
     */
    boolean isEmailUsed(String email);

    /**
     * 更新用户头像
     */
    boolean updateUserAvatar(Long userId, String avatarFileName);
    
    /**
     * 更新用户昵称
     */
    boolean updateUserNickname(Long userId, String nickname);

    /**
     * 检查用户是否设置了支付密码
     */
    boolean hasPayPassword(Long userId);
    
    /**
     * 设置用户支付密码
     */
    boolean setPayPassword(Long userId, String payPassword);
    
    /**
     * 判断用户是否有地址
     */
    boolean hasAddress(Long userId);
    
    /**
     * 查询用户充值记录
     * 查询条件：用户ID和支付方式为"余额充值"
     * @param userId 用户ID
     * @return 充值记录列表
     */
    List<Payment> getRechargeRecords(Long userId);
    
    /**
     * 查询用户消费记录
     * 查询条件：用户ID和支付方式不为"余额充值"（包括微信支付、支付宝支付、余额支付等）
     * @param userId 用户ID
     * @return 消费记录列表
     */
    List<Payment> getConsumptionRecords(Long userId);
    
    /**
     * 查询用户资金流水
     * 查询条件：仅用户ID，包含所有支付记录
     * @param userId 用户ID
     * @return 资金流水列表
     */
    List<Payment> getPaymentRecords(Long userId);
}
